package cn.tedu.rabbitmq.consumer;

import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

import java.nio.charset.StandardCharsets;

/**
 * 1. 容器bean对象(可以消费者盗用业务实现 持久层实现做数据读写)
 * 2. 使用接口约束实现方法 使用注解明确表述监听(队列名称)
 * 3. 方法入参就是消费的消息
 */
@Component
public class DemoConsumer {
    //rabbitmq整合中 使用注解 让消费代码绑定队列
    /*@RabbitListener(queues="demo-queue")
    public void consume(String msg){
        //实现消费逻辑
        System.out.println("消费者接收到的消息数据:"+msg);
    }*/
    @RabbitListener(queues="demo-queue")
    public void consume(String msg1,Message message,Channel channel){
        //消息头属性
        message.getMessageProperties();
        //消息体 和你直接接收String区别在于没有序列化
        byte[] body = message.getBody();
        String msg=new String(body, StandardCharsets.UTF_8);
        //实现消费逻辑
        System.out.println("消费者接收到的消息数据:"+msg);
    }
}
